/*
 * CS_MARKET_SALE_ITEM_INFO.cpp
 *
 *  Created on: 2013. 7. 17.
 *      Author: mega@gamevil.com
 */

#include "../../Command.h"
#include "../../User.h"
#include "../../NLogic/Trade.h"
#include "../../NProcess/Static.h"

namespace ProjectZ { namespace NCommand {

void Command::CS_MARKET_SALE_ITEM_INFO(User * pUser, ::Network::Packet * pPacket)
{
/*	// 거래소 최초 입장 시 판매 아이템에 대한 정보
	CS_MARKET_SALE_ITEM_INFO	0x100C
	{
	}

	SC_MARKET_SALE_ITEM_INFO	0x100D
	{
		s16 ack;	 			/// 성공(1),  실패(-1), 판매된 아이템 없음(-3)
		u8	count
		{
			u8	class_type;			// 장착클래스 타입
			u8	sheet_type;			// 테이블 시트 타입
			u16	tid;				// 테이블 아이디
			u8	cur_refine_step;	// 진화단계
			u8	quality;			// 등급
			u32	sale_price;		 	// 판매가격
			s14	s14sell_date;		// 판매 날짜(ex: 20130131) + 시간 (XX:XX:XX)
		}
	}*/

	PREPARE_PACKET;

	// 2013년 12월23일 메시지 삭제
	NLogic::Trade * pTrade = pUser->GetTrade();
	if (NULL == pTrade)
	{
		DEBUGLOG("CS_MARKET_SALE_ITEM_INFO : pTrade is NULL!");
		return;
	}

	pTrade->GetSoldItemVector().clear();

	::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
	*pAck << static_cast<int16_t>(ACK_MARKET_NOT_EXIST_SOLD_OUT);
	*pAck << static_cast<uint8_t>(0);
	pAck->MakePacket(CMD_SC_MARKET_SALE_ITEM_INFO);
	pUser->Send(pAck);
	return;



//	NLogic::Trade * pTrade = pUser->GetTrade();
//	if (NULL == pTrade)
//	{
//		DEBUGLOG("CS_MARKET_SALE_ITEM_INFO : pTrade is NULL!");
//		return;
//	}
//
//	if (false == pTrade->SoldItemLoadToDatabase())
//	{
//		DEBUGLOG("CS_MARKET_SALE_ITEM_INFO : false == pTrade->SoldItemLoadToDatabase()");
//		return;
//	}
//
//	NLogic::Trade::SOLDITEMVECTOR & clsVector = pTrade->GetSoldItemVector();
//
//	int soldoutCount = static_cast<int>(clsVector.size());
//
//	// 판매된 아이템이 없는 경우
//	if (0 == soldoutCount)
//	{
//		::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
//		*pAck << static_cast<int16_t>(ACK_MARKET_NOT_EXIST_SOLD_OUT);
//		*pAck << static_cast<uint8_t>(0);
//		pAck->MakePacket(CMD_SC_MARKET_SALE_ITEM_INFO);
//		pUser->Send(pAck);
//		return;
//	}
//
//	char strSoldTime[14+1];
//
//	::Network::Packet * pAck = ::Network::GETPACKETPOOL()->SEND_NEW();
//	*pAck << static_cast<int16_t>(ACK_OK);
//	*pAck << static_cast<uint8_t>(soldoutCount);
//
//	std::for_each(clsVector.begin(), clsVector.end(), [&](NLogic::Trade::SoldItem value) {
//		*pAck << static_cast<int8_t>(value.classType);
//		*pAck << static_cast<uint8_t>(value.sheetType);
//		*pAck << static_cast<uint16_t>(value.tid);
//		*pAck << static_cast<uint8_t>(value.curRefineStep);
//		*pAck << static_cast<uint8_t>(value.itemQuality);
//		*pAck << value.itemPrice;
//
//		memset(strSoldTime, 0x00, sizeof(strSoldTime));
//		strftime(strSoldTime, sizeof(strSoldTime), "%Y%m%d%H%M%S", localtime(&value.soldTime));
//
//		*pAck << strSoldTime;
//
//		// Database에 상태 갱신
//		pTrade->UpdateDatabaseSoldItemShowStatus(value.seq);
//	} );
//
//	pAck->MakePacket(CMD_SC_MARKET_SALE_ITEM_INFO);
//	pUser->Send(pAck);
//
//	// 판매완료 아이템은 한번만 노출한다.
//	clsVector.clear();
}

} /*NCommand*/ } /*ProjectZ*/
